package com.grandbroad.eim.wedgit;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;

import java.lang.reflect.Field;

public class MyTabLayout extends TabLayout {
    public MyTabLayout(Context context) {
        super(context);
    }

    public MyTabLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    public void addTab(@NonNull Tab tab) {
        Tab newTab = checkTabParent(tab);//addTab前检查是否可用，如果不可用就获取可用的Tab。
        super.addTab(newTab);
    }

    private Tab checkTabParent(@NonNull Tab tab) {
        try {
            Field mParent = Tab.class.getDeclaredField("mParent");
            mParent.setAccessible(true);
            Object o = mParent.get(tab);
            if (o != this) { //检测tab的mParent是不是this。
                return checkTabParent(newTab());//如果不是从新获取并重新检查。
            } else {
                return tab;//如果是直接返回。
            }
        } catch (Exception e) {
            throw new RuntimeException("创建Tab失败！", e);
        }
    }


}
